package com.zwr.sheller.shop.service;


import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * @author 付龙江
 * @date 2022/1/7 17:13
 */
public interface SalesDataService {
    /**
     * 销售统计
     * @param from 开始时间
     * @param to 截止时间
     * @param page 页码
     * @param size 每页条数
     * @return 销售统计数据
     */
    Map<String, Object> selectSalesData(String from, String to, Integer page, Integer size);

    /**
     *
     * @return 导出销售统计列表
     */
    List<Map<String,Object>>uploadSalesData(String from, String to);

    /**
     * @return 订单统计是数据
     */
    Map<String,Object> selectOrderCount();

    /**
     * @return 订单统计下的具体订单信息
     */
    PageInfo<Map<String, Object>> selectSpecificOrder(String from, String to, Integer page, Integer size);

    /**
     *
     * @param from 开始时间
     * @param to 结束时间
     * @return 返回导出数据
     */
    List<Map<String,Object>> uploadSpecificOrder(String from, String to);

    /**
     * 销售明细
     * @param from 开始时间
     * @param to 结束时间
     * @param page 页码
     * @param size 每页条数
     * @param notPayStatus 待付款
     * @param deliverGoodsStatus 待发货
     * @param getGoodsStatus 待收货
     * @param backGoodsStatus 退货
     * @param cancelStatus 已取消
     * @param successStatus 已完成
     * @param usToOrderStatus 自提订单
     * @return 返回符合以上要求的数据
     */
    PageInfo<Map<String, Object>>selectSalesDetail(String from, String to,Integer page, Integer size,
                                              Integer notPayStatus, Integer deliverGoodsStatus,
                                              Integer getGoodsStatus, Integer backGoodsStatus,
                                              Integer cancelStatus, Integer successStatus,
                                              Integer usToOrderStatus);

    /**
     * 导出销售明细
     * @param from 开始时间
     * @param to 结束时间
     * @param notPayStatus 待付款
     * @param deliverGoodsStatus 待发货
     * @param getGoodsStatus 待收货
     * @param backGoodsStatus 退货
     * @param cancelStatus 已取消
     * @param successStatus 已完成
     * @param usToOrderStatus 自提订单
     * @return 返回符合以上要求的数据
     */
    List<Map<String,Object>> uploadSalesDetail(String from, String to,
                                               Integer notPayStatus, Integer deliverGoodsStatus,
                                               Integer getGoodsStatus, Integer backGoodsStatus,
                                               Integer cancelStatus, Integer successStatus,
                                               Integer usToOrderStatus);

    /**
     * 销售排行
     * @param from 开始时间
     * @param to 截止时间
     * @param page 页码
     * @param size 每页条数
     * @param status 状态
     * @return 返回要求数据
     */
    PageInfo<Map<String, Object>> selectSalesRanking(String from, String to,Integer page, Integer size,Integer status);

    /**
     * 导出销售排行
     * @param from 开始时间
     * @param to 截止时间
     * @param status 状态
     */
    List<Map<String,Object>> uploadSalesRanking(String from, String to,Integer status);

    /**
     * 首页信息
     * @return 商铺、商品、订单、订单走势图、交易排名
     */
    Map<String,Object> selectIndexMessage();
}
